const { session, update } = require("../../api/index");

Page({
    data: {
        oldPassword: '',
        newPassword: '',
        confirmPassword: '',
        passwordStrength: 0,
        strengthText: '弱'
    },

    onLoad() {
        // 页面加载时的逻辑
    },

    // 返回上一页
    goBack() {
        wx.navigateBack();
    },

    // 清除输入框内容
    clearOldPassword() {
        this.setData({ oldPassword: '' });
    },

    clearNewPassword() {
        this.setData({ newPassword: '' });
        this.checkPasswordStrength('');
    },

    clearConfirmPassword() {
        this.setData({ confirmPassword: '' });
    },

    // 检查密码强度
    checkPasswordStrength(password) {
        let strength = 0;
        let text = '弱';

        // 检查密码长度
        if (password.length >= 8) {
            strength += 1;
        }

        // 检查是否包含字母和数字
        if (/[A-Za-z]/.test(password) && /[0-9]/.test(password)) {
            strength += 1;
        }

        // 检查是否包含特殊字符
        if (/[^A-Za-z0-9]/.test(password)) {
            strength += 1;
        }

        // 根据强度设置文本
        switch (strength) {
            case 1:
                text = '弱';
                break;
            case 2:
                text = '中';
                break;
            case 3:
                text = '强';
                break;
            default:
                text = '弱';
                strength = 0;
        }

        this.setData({
            passwordStrength: strength,
            strengthText: text
        });
    },

    // 监听新密码输入
    onNewPasswordInput(e) {
        const password = e.detail.value;
        this.setData({ newPassword: password });
        this.checkPasswordStrength(password);
    },

    // 提交修改
    async submitChange() {
        const { oldPassword, newPassword, confirmPassword } = this.data;

        // 验证输入
        if (!oldPassword) {
            wx.showToast({
                title: '请输入当前密码',
                icon: 'none'
            });
            return;
        }

        if (!newPassword) {
            wx.showToast({
                title: '请输入新密码',
                icon: 'none'
            });
            return;
        }

        if (newPassword.length < 8) {
            wx.showToast({
                title: '密码长度不能少于8位',
                icon: 'none'
            });
            return;
        }

        if (!/[A-Za-z]/.test(newPassword) || !/[0-9]/.test(newPassword)) {
            wx.showToast({
                title: '密码必须包含字母和数字',
                icon: 'none'
            });
            return;
        }

        if (newPassword !== confirmPassword) {
            wx.showToast({
                title: '两次输入的密码不一致',
                icon: 'none'
            });
            return;
        }

        // 调用修改密码接口
        wx.showLoading({
            title: '修改中...'
        });

        try {
            // 获取当前用户表名
            const tableName = wx.getStorageSync('frontSessionTable');
            
            // 获取当前用户信息
            const userRes = await session(tableName);
            if (userRes.code !== 0) {
                throw new Error('获取用户信息失败');
            }

            // 验证原密码
            if (userRes.data.mima !== oldPassword) {
                wx.hideLoading();
                wx.showToast({
                    title: '原密码不正确',
                    icon: 'none'
                });
                return;
            }

            // 更新密码
            const updateData = {
                ...userRes.data,
                mima: newPassword
            };

            const updateRes = await update(tableName, updateData);
            if (updateRes.code === 0) {
                wx.hideLoading();
                wx.showToast({
                    title: '修改成功',
                    icon: 'success'
                });
                
                // 更新全局用户信息
                getApp().globalData.userInfo = updateData;
                
                // 延迟返回上一页
                setTimeout(() => {
                    wx.navigateBack();
                }, 1500);
            } else {
                throw new Error(updateRes.msg || '修改失败');
            }
        } catch (error) {
            wx.hideLoading();
            wx.showToast({
                title: error.message || '修改失败',
                icon: 'none'
            });
        }
    }
}); 